MySQL De Postcodes tabel verbinden met de Personen tabel
Om de
Postcodes
tabel te linken aan de Personen
tabel moeten we eerst een primaire sleutel toekennen aan de Postcodes
tabel en daarna een vreemde sleutel toevoegen aan de Personen
tabel die verwijst naar de Postcodes
tabel.Probleem
We hebben al de tabel Postcodes en die willen we linken aan de tabel Personen.
Design
- Een PK kolom met naam Id van het gegevenstype int en autoincrement aan de tabel Postcode toevoegen.
- Voeg een PK constraint toe aan de tabel Postcode op de kolom Id.
- Insert een rij in de tabel Postcode met voor de kolom Code de waarde 0000, Plaats en Provincie de waarde Onbekend, Localite en Province de waarde Onbekend.
- Voeg een FK kolom toe aan de tabel Personen met de naam IdPostcode van het gegevenstype int.
- Update deze FK kolom met de Id van de rij met Postcode 0000.
- Voeg een FK constraint toe aan de tabel Personen voor de FK IdPostcode.
Sla de scripts op in een bestand met de naam PersonenPostcodesNormalize.sql.
Oplossing
use ModernWays; -- een pk kolom met naam Id toevoegen alter table Postcodes add Id int auto_increment not null; -- voeg een fk constraint toe aan Personen alter table Postcodes add constraint pk_Postcodes_Id primary key(Id); -- voeg een dummy postcode toe insert into Postcodes ( Code, Plaats, Provincie, Localite, Province ) values ( '0000', 'Niet van toepassing', 'Niet van toepassing', 'Non applicable', 'Non applicable' ); -- voeg een fk kolom toe als die nog niet bestaat alter table Personen add IdPostcode int; -- in de eerste 3 IdPostcode kolommen de waarde van de 8400 postcode plaatsen update Personen set IdPostcode = (select Id from Postcodes where Code = '8400') where Id <= 3; -- de volgende drie met 2000, 9000, 1000 enz alter table Personen add constraint fk_PersonenPostcodes_IdPostcode foreign key(IdPostcode) references Postcodes(Id);
2018-05-21 21:01:07